home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr42 / vocshow2.zip / VOC_SHOW.PKG < prev   
Text File  |  1993-06-08  |  2KB  |  70 lines

  1. -- Copyright 1992 by Tom Moran.  May be used by anyone for any purpose.
  2.  
  3. with Command_Line,
  4.      Text_Io,
  5.      Voc_Data,
  6.      Voc_Io,
  7.      Voc_Pc;
  8.  
  9. procedure Voc_Show is
  10.  
  11.   package Packing_Io is new Text_Io.Enumeration_Io(Voc_Data.Pack_Types);
  12.  
  13.   package Duration_Io is new Text_Io.Fixed_Io(Duration);
  14.  
  15.   F : Voc_Io.Handles;
  16.  
  17.   type Handle_Block_Results is (Finished, More_To_Come);
  18.  
  19.   function Handle_Block return Handle_Block_Results is
  20.     B : Voc_Data.Blocks;
  21.   begin
  22.     Voc_Io.Read(F, B);
  23.     Text_Io.New_Line;
  24.     case B.Block_Type is
  25.       when Voc_Data.Terminator =>
  26.         return Finished;
  27.       when Voc_Data.Voice_Data =>
  28.         Text_Io.Put("sound "
  29.                     & Integer'Image(B.Block_Length)
  30.                     & " bytes @"
  31.                     & Integer'Image(Integer(B.Sample_Rate))
  32.                     & " samples/sec ");
  33.         Packing_Io.Put(B.Packing);
  34.         Voc_Pc.Play(B);
  35.       when Voc_Data.Silence =>
  36.         Text_Io.Put("silence ");
  37.         Duration_Io.Put(B.Silence_Interval);
  38.         Text_Io.Put(" seconds");
  39.         Voc_Pc.Play(B);
  40.       when Voc_Data.Marker =>
  41.         Text_Io.Put("marker=" & Integer'Image(Integer(B.Mark)));
  42.       when Voc_Data.Text =>
  43.         Text_Io.Put(B.Text_String);
  44.       when Voc_Data.Start_Repeat =>
  45.         Text_Io.Put("start repeat " & Integer'Image(Integer(B.Count)));
  46.       when Voc_Data.End_Repeat =>
  47.         Text_Io.Put("end repeat");
  48.       when Voc_Data.Voice_Continuation =>
  49.         Text_Io.Put("voice_continuation"); -- should never happen!
  50.     end case;
  51.     return More_To_Come;
  52.   end Handle_Block;
  53.  
  54. begin
  55.   if Command_Line.Parameter_Count /= 1 then
  56.     Text_Io.Put("usage:" & Command_Line.Parameter(0) & " filename");
  57.   else
  58.     Voc_Io.Open(Command_Line.Parameter(1), F);
  59.     loop
  60.       exit when Handle_Block = Finished;
  61.     end loop;
  62.     Voc_Io.Close(F);
  63.   end if;
  64.  
  65. exception
  66.   when Voc_Io.Name_Error =>
  67.     Text_Io.Put("Sorry, can't find file " & Command_Line.Parameter(1));
  68.  
  69. end Voc_Show;
  70.